【Python+Django】一个简单停车场管理系统的设计及代码实现 您所在的位置:网站首页 django session登录 【Python+Django】一个简单停车场管理系统的设计及代码实现

【Python+Django】一个简单停车场管理系统的设计及代码实现

2023-04-07 18:33| 来源: 网络整理| 查看: 265

本文利用Python的Django框架从0开始最终实现一个简单的Web 停车场管理系统。

目前一个典型的停车场管理包含如下几个功能:

1、扫描车牌识别自动出入场

2、会员管理(充值,提醒充值。。等)

3、收费(如果是有效期内的会员就免费)

为了实现上面几个功能,我们先简单的做下数据库和页面的设计。

数据库设计

数据库的话可以设计以下几个:

会员表:

车牌,姓名,手机号,会员起始日期,会员截止日期

用于会员的到期提醒,充值等管理

出入库记录表:

车牌,入场日期时间,出场日期时间,付款日期时间,付款金额

用于出入场记录及收费管理页面功能设计

简单对系统做一个页面的结构划分

停车场管理系统​会员管理会员充值会员查看车辆入场管理​车牌识别​入场记录车辆出场管理​车牌识别​出场记录​计算费用收费管理系统实现

初步整理了需求后,我们直接开始撸代码。

创建项目

django-admin startproject DjangoPark2023

进入项目文件夹

cd DjangoPark2023

创建虚拟环境

python -m venv venv

进入虚拟环境

venv\Scripts\activate.bat

在虚拟环境中安装Django

pip install django

创建app

Django框架下的核心的模型和视图都需要在app中实现,我们简单点就创建一个app名为app01,实际项目中可以根据模块创建多个app。

python manage.py startapp app01

安装app

在文件 DjangoPark2023/settings.py 中更新代码如下

# Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01' #增加此项 ]

截止到目前的文件结构

定义模型

根据我们前面的数据库

app01/models.py

from django.db import models # Create your models here. class vip_uer(models.Model): name = models.CharField(max_length=32, verbose_name='姓名') carnum = models.CharField(max_length=32, unique=True, verbose_name='车牌号') phone = models.CharField(max_length=32, verbose_name='手机号') begintime = models.DateTimeField(auto_now=False, auto_now_add=False) endtime = models.DateTimeField(auto_now=False, auto_now_add=False) class car_record(models.Model): carnum = models.CharField(max_length=32, verbose_name='车牌号') intime = models.DateTimeField(auto_now=False, auto_now_add=False, verbose_name='入场时间') outtime = models.DateTimeField(auto_now=False, auto_now_add=False, verbose_name='出场时间', null=True, blank=True) paytime = models.DateTimeField(auto_now=False, auto_now_add=False ,verbose_name='收费时间', null=True, blank=True) amount = models.IntegerField(verbose_name='收费金额', null=True, blank=True)安装连接MySQL的包

pip install pymysql

引入pymysql

DjangoPark2023/__init__.py

import pymysql pymysql.install_as_MySQLdb()

MySQL的安装就不详细讲了,大家自行安装。

手工创建一个数据库,名字为:djangopark2023

连接MySQL数据库配置

DjangoPark2023/settings.py

# Database # https://docs.djangoproject.com/en/4.1/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'djangopark2023', # 数据库名称 'HOST': '127.0.0.1', # 数据库地址,本机 ip 地址 127.0.0.1 'PORT': 3306, # 端口 'USER': 'root', # 数据库用户名 'PASSWORD': '123456', # 数据库密码 } } 迁移模型

python manage.py makemigrations

更新迁移表

python manage.py migrate

数据表创建成功

创建超级用户

python manage.py createsuperuser

用户名:admin

密码:123456

运行服务器

python manage.py runserver

http://127.0.0.1:8000/

输入后台网址看下:http://127.0.0.1:8000/admin/

登录后没有显示自定义的模型,还需要注册模型到后台。

模型注册到admin后台

app01/admin.py

from django.contrib import admin # Register your models here. # 别忘了导入models from app01.models import vip_uer # 注册模型到admin中 admin.site.register(vip_uer)

添加一条VIP记录

功能和页面实现会员管理

会员充值:

充值时选择充值天数,30天,90天,180天,360天,或自定义

如果车牌不存在,则添加一条会员记录,起始时间为现在,截止时间为现在+套餐天数。

如果车牌已存在,没过期,则截止时间 加上 套餐天数,如果过期了,则更新起始时间为现在,截止时间为现在+套餐天数。

前端网页模板

新建文件夹templates用于管理模板文件。

然后配置下模板位置

import os *... TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], # 添加此项 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]

接着在templates创建模板文件:这里我们未来快速实现功能,暂时先直接在线引入bootstrap静态文件。

templates/recharge.html

会员充值 {% csrf_token %} 车牌号 充值天数 提交充值

视图函数功能实现:

app01/views.py

from django.http import HttpResponse from django.shortcuts import render import datetime from app01 import models from .models import vip_uer,car_record # Create your views here. def Recharge(request): if requesthod == 'POST': chargedays = int( request.POST.get('chargedays') ) carnum = request.POST.get('carnum') print(chargedays) days = datetime.timedelta(days=chargedays) if models.vip_uer.objects.filter(carnum=carnum): vip = vip_uer.objects.get(carnum=carnum) endtime = vip.endtime + days print(vip.endtime) models.vip_uer.objects.update(carnum=carnum, endtime = endtime) else: begtime = datetime.datetime.now() endtime = begtime + days models.vip_uer.objects.create(carnum=carnum, begintime = begtime ,endtime=endtime) return HttpResponse("充值成功!") else: return render(request, 'recharge.html')路由器配置

DjangoPark2023/urls.py 中更新如下代码,配置对应的路由规则。

from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [ path('admin/', admin.site.urls), path('recharge/', views.Recharge), #添加如下项 ]

重新运行服务器

输入地址:http://127.0.0.1:8000/recharge/

输入车牌号和充值天数后提交充值后。

基础的架构打好了,接下来就是各种功能视图和模板的实现了,有时间再继续更!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有